home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -seriously_amiga- / shareware / programming / other / robodoc3.0j / docs / robodoc.doc next >
Text File  |  1998-01-05  |  18KB  |  574 lines

  1.  
  2.  
  3.                          Robodoc v3.0j
  4.  
  5.        (c)  20 Dec 1997,  Maverick Software Development
  6.  
  7.  
  8.                  robodoc documentation for the;
  9.                          Amiga systems
  10.                        DEC Alpha systems
  11.                         DEC VAX systems
  12.                           UNIX systems
  13.                         Windows NT systems
  14.  
  15.           Original program and idea:  Jacco van Weert
  16.                      Versions 2.0 and up:
  17.  Frans Slothouber, Bernd Koesling, Anthon Pang, and Thomas Aglassinger
  18.  
  19.  
  20.      New versions of Robodoc are made available on AmiNet.
  21.  
  22.  
  23.  
  24.                           1.0  Preface
  25.                           ------------
  26.  
  27. The complete Robodoc archive is copyrighted by Jacco van Weert, and
  28. Frans Slothouber of Maverick Software Development.
  29.  
  30. Robodoc can be freely distributed on FREEWARE base as long as all
  31. files remains in their original state, no files may be added to the
  32. archive, and also no files may be excluded.
  33.  
  34. This software is provided on an "AS IS" basis without warranty of any
  35. kind.  We are not responsible for any damage to your hardware,
  36. software, or brain, caused by using this software.
  37.  
  38. You can use Robodoc with C, Assembler, Basic, Fortran, LaTex, and PS
  39. programs.  Additional languages can be used by a few modifications to
  40. the source code.
  41.  
  42.  
  43.  
  44.                         2.0 Introduction
  45.                         ----------------
  46.  
  47. Robodoc is based on the AutoDocs program written some time ago by
  48. Commodore.  The idea is to include for every function a standard
  49. header containing all sorts of information about that
  50. procedure/function.  An AutoDocs program will extract those headers
  51. from the source file and put them in a autodocs-file.  This way you
  52. can include the program documentation in the source code and is it not
  53. necessary to maintain two documents.
  54.  
  55. Robodoc is such a program, however Robodoc has several additions.  For
  56. one it can generate the documentation in different formats, ASCII,
  57. HTML, RTF, LaTex, and AmigaGuide.  Another feature is that it can
  58. fully automatically create links within the document, and to other
  59. documents.  It is also possible to include parts of the source in you
  60. document, complete with links.  For instance it is possible to include
  61. a complete subroutine, and have the function names in this subroutine
  62. point to their documentation.
  63.  
  64. If you never have used AutoDoc or Robodoc before you might take a look
  65. at the example in the examples directory.  These are two amigaguide
  66. files that contain the documentation generated with Robodoc of the
  67. Robodoc program itself.
  68.  
  69. Robodoc can generate the documentation in five different
  70. formats:
  71.   o ASCII format;
  72.     The autodocs-file is just a plain ASCII text-file, this file
  73.     is very closely related to the one that the original
  74.     AutoDocs program would generated.
  75.   o AmigaGuide format;
  76.     This is a format used on the Amiga computers to view in a
  77.     HyperText way a text-file.  The AmigaGuide program is
  78.     necessary to view the resulting autodocs-file.
  79.   o HTML format;
  80.     The autodocs-file will be written as a HTML-file (HyperText
  81.     Markup Language), this format is used on the WWW-Internet.
  82.     By using a Mosaic/Netscape program you view the
  83.     documentation.
  84.   o LaTex
  85.   o RTF
  86.  
  87.  
  88.  
  89.             3.0  Hardware and software requirements
  90.             ---------------------------------------
  91.  
  92. Robodoc was developed on a standard Amiga 1200.  It is written in C,
  93. and has been successfully compiled with SAS/C 6.50 and DICE C.
  94. However it is written according to the ansi C standard and uses no
  95. special functions, so it should run on every system with a C-compiler.
  96. For instance it also has been successfully compiled with gcc on a Sun
  97. system.
  98.  
  99. The complete source code consists of two files; Robodoc.c and
  100. Robodoc.h.
  101.  
  102.  
  103.                   4.0 This Version Of Robodoc
  104.                   ---------------------------
  105.  
  106. This is version 3.0j of Robodoc, containing a number of bug fixes, and
  107. conforms to the DTD for HTML-3.2 (thanks to the work of Thomas
  108. Aglassinger).
  109.  
  110.  
  111.    5.0  How to format your code so that you can use Robodoc.
  112.    ---------------------------------------------------------
  113.  
  114. Robodoc allows you to mix the program documentation with the
  115. source code.  It does require though that this documentation has
  116. a particular layout so Robodoc can recognize it.
  117.  
  118. The following header was taken from the original Robodoc
  119. program.
  120.  
  121.   /****h* AUTODOC/robodoc [2.0d]
  122.   *
  123.   *  NAME
  124.   *    robodoc -- AutoDoc formatter
  125.   *  COPYRIGHT
  126.   *    Maverick Software Development
  127.   *  FUNCTION
  128.   *    Robodoc is indented as a replacement for the original
  129.   *    AutoDocs program Robodoc will extract from a source file
  130.   *    the procedure comment headers and put them in a separate
  131.   *    documentation file.
  132.   *  CREATION DATE
  133.   *    20-Dec-94
  134.   *  MODIFICATION HISTORY
  135.   *    25-Jan-94     -       v0.92: First version
  136.   *    10-Mar-95     -       v1.0 : Complete version
  137.   *    10-May-1995   -       v2.0 : Major update.
  138.   *  NOTES
  139.   *    Has been successfully compiled with DICE and SAS.
  140.   *******
  141.   */
  142.  
  143. It includes two special markers, and a number of items.  There is
  144. a marker that marks the beginning of a header and one that marks
  145. the end of a header.
  146.  
  147. This header is intended for a program in C, a same header for
  148. another languages would look a slightly different.  However
  149. Robodoc recognizes some other types markers to:
  150.  
  151. /****                        C
  152. ;****                        Assembler
  153. ****                         Assembler
  154. REM ****                     Basic
  155. C     ****                   Fortran
  156. %****                        LaTeX, TeX, Postscript
  157.  
  158.  
  159. After which a "i", "*" or "h" (header type) should follow, then
  160. another * and then:
  161.  
  162. <MOD>/<PROC><SP>[<VERSION>]<SP><REST>
  163.  
  164. Where:
  165. <SP>      - is any sequence of white characters (spaces of tabs),
  166.             excluding the empty string.
  167. <TYPE>    - The header type, this is one of the following characters,
  168.             'h' = MainProgram, '*' = Normal header, 'i' = Internal
  169.             header.
  170. <MOD>     - Module name, any sequence of non white characters, except
  171.             '/'.
  172. <FUNC>    - Function name, any sequence of non white characters.
  173. <VERSION> - A version number, any sequence of non white characters,
  174.             except ']'.
  175. <REST>    - rest of the line, any sequence of characters.
  176.  
  177.  
  178. This might look terribly complicated but here are some examples:
  179.  
  180. In C
  181.    /****h* programs/greatprogram.library [1.0] *
  182.  
  183. In Assembler
  184.    ****** greatprogram.library/program_init
  185.    ;****i* greatprogram.library/very_secret [2.0d] ***
  186.  
  187. In Fortran
  188.    C     ****h* programs/greatprogram.library         C
  189.  
  190. In Basic, (assuming you don't use basis that still needs line numbers).
  191.    REM ****h* programs/greatprogram.library
  192.  
  193.  
  194. A header ends with at least three asterisks at the start of a
  195. line ("***") right after the remark marker.  In general Robodoc
  196. will recognize anything of the that starts with:
  197.  
  198. C    ***
  199. REM ***
  200. ***/
  201. ;***
  202. %***
  203.  
  204.  
  205.  
  206.  
  207.                         5.1 Header Types
  208.                         ----------------
  209.  
  210. Robodoc handles three different type of headers;
  211.   o MainProgram header (optional);
  212.     These headers are placed at the start of a program and
  213.     containing some general information about the program.
  214.     These where not available in the original AutoDocs program.
  215.   o Normal header;
  216.     The normal header, available to the general public.
  217.   o Internal header;
  218.     The internal header not available to the general public,
  219.     mainly used by the programmer him/herself.
  220.  
  221.  
  222.                        5.2 Header Items.
  223.                        -----------------
  224.  
  225. When Robodoc has found a header it will try to identify items,
  226. currently it looks for one of the following item names:
  227.  
  228.   "NAME", "COPYRIGHT", "SYNOPSIS",
  229.   "FUNCTION", "DESCRIPTION", "AUTHOR",
  230.   "CREATION DATE", "MODIFICATION HISTORY", "HISTORY",
  231.   "INPUTS", "ARGUMENTS", "OPTIONS", "PARAMETERS", "SWITCHES",
  232.   "OUTPUT", "SIDE EFFECTS", "RESULT", "RETURN VALUE",
  233.   "EXAMPLE", "NOTES", "DIAGNOSTICS",
  234.   "WARNINGS", "ERRORS", "BUGS", "TODO", "IDEAS",
  235.   "PORTABILITY", "SEE ALSO", "SOURCE",
  236.   "BEAST METHODS", "NEW METHODS",
  237.   "BEAST ATTRIBUTES", "NEW ATTRIBUTES",
  238.  
  239. Robodoc does this so that it can format each item with a
  240. different style (colour, font, etc.) if the user want it.  These
  241. can be specified in the Robodoc.defaults file, see the next
  242. section more information.
  243.  
  244. To get an idea what the various items are meant for take a look
  245. at the following header that was taken from the original AutoDoc
  246. documentation (hope they don't object to this;)
  247.  
  248.   /****** financial.library/StealMoney *****************************
  249.   *
  250.   *  NAME
  251.   *    StealMoney -- Steal money from the Federal Reserve Bank. (V77)
  252.   *  SYNOPSIS
  253.   *    error = StealMoney( userName,amount,destAccount,falseTrail )
  254.   *    D0,Z                D0       D1.W    A0         [A1]
  255.   *
  256.   *    BYTE StealMoney
  257.   *         ( STRPTR,UWORD,struct AccountSpec *,struct falseTrail *);
  258.   *  FUNCTION
  259.   *    Transfer money from the Federal Reserve Bank into the
  260.   *    specified interest-earning checking account.  No records of
  261.   *    the transaction will be retained.
  262.   *  INPUTS
  263.   *    userName    - name to make the transaction under.  Popular
  264.   *                  favorites include "Ronald Reagan" and
  265.   *                  "Mohamar Quadaffi".
  266.   *    amount      - Number of dollars to transfer (in thousands).
  267.   *    destAccount - A filled-in AccountSpec structure detailing the
  268.   *                  destination account (see financial/accounts.h).
  269.   *                  If NULL, a second Great Depression will be
  270.   *                  triggered.
  271.   *    falseTrail  - If the DA_FALSETRAIL bit is set in the
  272.   *                  destAccount, a falseTrail structure must be
  273.   *                  provided.
  274.   *  RESULT
  275.   *    error - zero for success, else an error code is returned
  276.   *           (see financial/errors.h).  The Z condition code
  277.   *           is guaranteed.
  278.   *  EXAMPLE
  279.   *    Federal regulations prohibit a demonstration of this function.
  280.   *  NOTES
  281.   *    Do not run on Tuesdays!
  282.   *  BUGS
  283.   *    Before V88, this function would occasionally print the
  284.   *    address and home phone number of the caller on local police
  285.   *    976 terminals.  We are confident that this problem has been
  286.   *    resolved.
  287.   *  SEE ALSO
  288.   *      CreateAccountSpec(),security.device/SCMD_DESTROY_EVIDENCE,
  289.   *      financial/misc.h
  290.   *
  291.   *******************************************************************/
  292.  
  293.  
  294.  
  295.                      5.2.1 The Source Item
  296.                     -----------------------
  297.  
  298. New for version 2.0 is the source item. It allows you to include
  299. part of the source in the documentation as is demonstrated by the
  300. following example.
  301.  
  302.   /****i* Robodoc.c/RB_Panic [2.0d]
  303.   * NAME
  304.   *   RB_Panic -- Shout panic, free resources, and shut down.
  305.   * SYNOPSIS
  306.   *   RB_Panic (cause, add_info)
  307.   *   RB_Panic (char *, char *)
  308.   * FUNCTION
  309.   *   Prints an error message.
  310.   *   Frees all resources used by robodoc.
  311.   *   Terminates program.
  312.   * INPUTS
  313.   *   cause    - pointer to a string with the describes the
  314.   *              cause of the error.
  315.   *   add_info - pointer to a string with additional information.
  316.   * SEE ALSO
  317.   *   RB_Close_The_Shop ()
  318.   * SOURCE
  319.   */
  320.  
  321.   void RB_Panic (char *cause, char *add_info)
  322.   {
  323.     printf ("Robodoc: Error, %s\n",cause) ;
  324.     printf ("         %s\n", add_info) ;
  325.     printf ("Robodoc: Panic Fatal error, closing down...\n") ;
  326.     RB_Close_The_Shop () ;
  327.     exit(100) ;
  328.   }
  329.  
  330.   /*******/
  331.  
  332. The source item is in an experimental stage at the moment.  All
  333. lines between the source item and the following item are copied
  334. verbatim to the AutoDocs document.  It might be possible that
  335. certain expressions within the source conflict with the
  336. amigaguide program or a HTML viewer.  If so please report them
  337. to me, that is <slothoub@xs4all.nl>, so they can perhaps be
  338. solved in a next release a Robodoc.
  339.  
  340.  
  341. 5.3 The Robodoc Defaults file.
  342.  
  343. The robodoc.default file can be used to change the appearance of
  344. the documentation. For each item type you can define how the
  345. corresponding text should be rendered.
  346.  
  347. Each line in the default file consists of two parts, the item type
  348. and the item attributes. For instance
  349.  
  350. AUTHOR                    LARGE ITALICS BOLD UNDERLINE
  351.  
  352. Specifies that the AUTHOR item has the attributes LARGE,
  353. ITALICS, BOLD, and UNDERLINE.
  354.  
  355. The effect of each attribute is listed in the following table.
  356.  
  357. Item Attributes        GUIDE                     HTML
  358. --------------------------------------------------------------
  359. LARGE                  @{b},@{ub}      <FONT SIZE=5>,</FONT>
  360. SMALL                                  FONT SIZE=-1>,</FONT>
  361. NONPROP                                       </PRE>,<PRE>
  362. ITALICS                @{i},@{ui}                <I>,</I>
  363. BOLD                   @{b},@{ub}                <B>,</B>
  364. UNDERLINE              @{u},@{uu}                <U>,</U>
  365. SHINE           @{fg shine},@{fg text}          <EM>,</EM>
  366. HIGHLIGHT   @{fg highlight},@{fg text}          <EM>,</EM>
  367.  
  368.  
  369.  
  370.  
  371.             5.4 Creating links within the document.
  372.             ---------------------------------------
  373.  
  374. Creating links within the document is the most interesting
  375. feature of Robodoc.  A document with such links is much more
  376. easier to read.
  377.  
  378. If your source code consists of just one file, creating links is
  379. easy.  Just tell Robodoc that you want to have the output in
  380. HTML or AmigaGuide format, and it will automatically generate
  381. the links.  That is, at the beginning of the document it will
  382. create a table of contents that consists of links to all your
  383. function headers.
  384.   Robodoc will also search the complete text of you
  385. documentation for reference to function names, and it will
  386. create a link to the documentation of that function.
  387.  
  388. An example, assume you have the following function header in your
  389. source:
  390.  
  391. /****** Airmail.c/ZM_xpr_fopen [2.0a]
  392. * NAME
  393. *   ZM_xpr_fopen -- open a file.
  394. * SYNOPSIS
  395. *   filehandle = ZM_xpr_fopen (filename, accessmode)
  396. *           long ZM_xpr_fopen (char *, char *)
  397. * FUNCTION
  398. *   Open a file.
  399. * INPUTS
  400. *   filename    - pointer to a string containing the file name.
  401. *   accessmode  - how the file should be opened (C compatible).
  402. * RESULT
  403. *   a pointer to the opened file.
  404. *   0 -- if the open failed
  405. * SEE ALSO
  406. *   ZM_xpr_fread, ZM_xpr_fwrite, ZM_xpr_fclose.
  407. ******
  408. */
  409.  
  410. It will automatically turn "ZM_xpr_fread", "ZM_xpr_fwrite", and
  411. "ZM_xpr_fclose" into links to the documentation of these
  412. functions, (provided you have documented them of course).
  413.  
  414.  
  415.  
  416.                        6.0 The XREF files
  417.                        ------------------
  418.  
  419. The previous section described how to create links within a
  420. document, it is also possible, however, to create links to other
  421. files.  This does require the use of some additional files,
  422. called xref files, but these can also be generated with Robodoc.
  423. These xref files contain information about were certain
  424. references can be found and in which file.
  425.  
  426. Lets assume your project is split up in five different source
  427. files, and you want to generate links between these five files.
  428. What you have to do to accomplish this is to create a xref file
  429. for each of those five files.
  430.  
  431. With the GENXREF option Robodoc will generate such a xref file
  432. from the a source-file.  When you use this option, ONLY the xref
  433. file is created NOT the autodocs-file, however you still have to
  434. specify the name of the autodocs file because this name is
  435. needed for the creation of the xref file.
  436.  
  437. When all the xref files are created the documentation can be
  438. created.  To do so you have to use the XREF option and
  439. parameter.  This parameter contains the name of the file in
  440. which the names all xref files are defined (xreflist_filename).
  441. Notice:  this is a file with FILE NAMES, and you must created it
  442. by hand.
  443.  
  444. Xref files can also be created by the user or by other means,
  445. e.g.  the Autodoc.xref.  robodoc uses the same format as these
  446. standard XREF files.
  447.  
  448. An Example will make thing more clearly:
  449.  
  450. In the robodoc.lha archive there are two example programs
  451. prog1.C and prog2.C.
  452.  
  453. First create the xref files when want to create amigaguide
  454. autodocs-files:
  455.  
  456. Robodoc prog1.c prog1.guide GENXREF prog1.c.xref GUIDE
  457. Robodoc prog2.c prog2.guide GENXREF prog2.c.xref GUIDE
  458.  
  459. Now there are two xref files:  prog1.xref and prog2.xref.
  460.  
  461. Now create a <xreflist_filename> file.
  462. This file will hold only two lines;
  463. prog1.c.xref
  464. prog2.c.xref
  465.  
  466. More xref files can be added.  The name of this file can be
  467. anything, say it is "xref_files".
  468.  
  469. Now generate the final documentation;
  470.  
  471. robodoc prog1.c prog1.c.guide XREF xref_files GUIDE
  472. Robodoc prog2.c prog2.c.guide XREF xref_files GUIDE
  473.  
  474.  
  475.  
  476.  
  477.                       7.0 Usage of Robodoc
  478.                       --------------------
  479.  
  480. When you call Robodoc you should at least provide two parameters
  481.  
  482. Robodoc <sourcefile> <autodocfile>
  483.  
  484. Here <sourcefile> is the file with the program source of which
  485. you want to extract the documentation from and <autodocfile> is
  486. the file were you want the documentation to be stored.
  487.  
  488. In addition to this you can specify one of the following
  489. options:
  490.  
  491. ASCII
  492.  
  493.   The documentation will be in ASCII format (default).
  494.  
  495. GUIDE
  496.  
  497.   The documentation will be in AmigaGuide format.
  498.  
  499. HTML
  500.  
  501.   The documentation will be in HTML format.
  502.  
  503. LATEX
  504.  
  505.   The documentation will be in LATEX format.  (Experimental)
  506.  
  507. RTF
  508.  
  509.   The documentation will be in RTF format.
  510.  
  511. GENXREF <xref_filename>
  512.  
  513.   Generate a xref file, which then can be used to created
  514.   references within the documentation.
  515.  
  516. XREF <xreflist_filename>
  517.  
  518.   Use a set of xref files to create references (links) to other
  519.   documents or within the document.
  520.  
  521. INTERNAL
  522.  
  523.   Also include headers that are marked internal.
  524.  
  525. INTERNALONLY
  526.  
  527.   Only extract the headers marked internal.
  528.  
  529. SORT
  530.  
  531.   Sort the headers alphabetically.
  532.  
  533. TOC
  534.  
  535.   Generate a table of contents.  Is only useful when you select
  536.   ASCII as output mode.  With all other output modes the Table of
  537.   contents is generated anyway.
  538.  
  539. TABSIZE <number>
  540.  
  541.   Convert each tab into <number> spaces.
  542.  
  543. -v
  544.  
  545.   Verbose option, Robodoc will tell you what it is doing.
  546.  
  547.  
  548. The following abbreviations are also allowed:
  549.  
  550.   SORT         = -s
  551.   TOC          = -t
  552.   XREF         = -x
  553.   GENXREF      = -g
  554.   INTERNAL     = -i
  555.   INTERNALONLY = -io
  556.   TABSIZE      = -ts
  557.  
  558.  
  559.  
  560.  
  561.                     8.0 Suggestions or bugs
  562.                     -----------------------
  563.  
  564. If you find any bugs, catch them, put them in a jar, and send
  565. them to:
  566.  
  567.    slothoub@xs4all.nl.
  568.  
  569. Suggestions are also welcome on this address.
  570.  
  571. Flames can be directed to the sun....
  572.  
  573.  
  574.